﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SCEM.DTO;

namespace SCEM.DataLayer
{
    interface IEquipamentoDAO : IDAO<Equipamento>
    {
        /// <summary>
        /// Busca e retorna uma lista contendo todos os equipamentos que devem ter sua manutenção preventiva realizada em menos de 30 dias, sendo 
        /// que essa manutenção preventiva ainda não foi agendada.
        /// </summary>
        /// <returns>Uma lista contendo todos os equipamentos que satisfazem essa condição.</returns>
        List<EquipamentoDTO> ListarEquipamentosAlertaManutencao();

        /// <summary>
        /// Busca e retorna uma lista contendo todos os equipamentos que possuem uma manutenção preventiva agendada.
        /// </summary>
        /// <returns>Uma lista contendo todos os equipamentos que possuem uma manutenção preventina agendada.</returns>
        List<EquipamentoDTO> ListarEquipamentosManutencaoPreventinaAgendada();

        /// <summary>
        /// Busca e retorna as informações de manutenção associadas a um equipamento.
        /// </summary>
        /// <param name="equipamentoId">A identificação do equipamento.</param>
        /// <returns>As informações de manutenção associadas a esse equipamento ou <code>null</code> caso ocorra um erro.</returns>
        InformacoesManutencao GetInformacoesManutencao(string equipamentoId);

        /// <summary>
        /// Atualiza as informações de manutenção associadas a um equipamento.
        /// </summary>
        /// <param name="equipamentoId">A identificação do equipamento.</param>
        /// <param name="informacoes">As novas informações de manutenção associadas a esse equipamento.</param>
        /// <returns><code>true</code> em caso de sucesso, <code>false</code> caso contrário.</returns>
        bool UpdateInformacoesManutencao(string equipamentoId, InformacoesManutencao informacoes);
    }
}
